In order to increase performance for graphics processing units (GPUs), memory bandwidth reduction techniques are employed. One such way to decrease the bandwidth requirements is to perform what is called buffer compression. A graphics system typically uses two buffers: a color buffer where the colors of the pixels are drawn and a depth buffer where the depth of each pixel is stored. During rendering these buffers are read and written to and often the same pixel is accessed several times for both buffers. These read and write accesses are expensive in terms of energy and should therefore be kept to a minimum, in particular for user terminals with limited power supply, such as mobile devices.
Buffer compression means that blocks of buffer data is stored in memory in compressed form. Since the decompression and compression might happen several times for a particular pixel and block, it is important that the compression is lossless, i.e. non-destructive.
Document [1] and [2] give good overviews of prior art color buffer compression and depth buffer compression, respectively.
There are still a need for efficient depth buffer compression/decompression algorithms and in particular such algorithms that can be effectively employed for handling pixel blocks having depth buffer values belonging to different depth value planes.